package com.ruoyi.web.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * @Description 模型检验评估-不同高度入参
 * @Author liuhl
 * @Date 2024/7/15
 **/
@Data
@ApiModel(value = "ModelAssessDiffAltVo", description = "模型检验评估-不同高度入参")
public class ModelAssessDiffAltVo {

//    {
//        "satellite":"0~400:SWDATA_OBS_DEN_GRACEA,401~700:SWDATA_OBS_DEN_GRACEB",  //这个前端组装好 java用字符串接
//            "startTime":"2005-01-01",
//            "endTime":"2005-01-10",
//            "interval":1440,
//            "model":["JB2008","nrlmsise00","DTM2020","Jacchia71"]
//    }

    @NotBlank(message = "起始时间不能为空")
    @ApiModelProperty("起始时间，例如 2014-01-01")
    private String startTime;

    @NotBlank(message = "结束时间不能为空")
    @ApiModelProperty("结束时间，例如 2014-01-01")
    private String endTime;

    @NotBlank(message = "高度不能为空")
    @ApiModelProperty("高度，格式如：400,500，代表起始高度400，结束高度500")
    private String altitude;

    @NotBlank(message = "卫星列表不能为空")
    @ApiModelProperty("范围及卫星集合，格式如：0~400:SWDATA_OBS_DEN_GRACEA,401~700:SWDATA_OBS_DEN_GRACEB")
    private String satellite;

    @NotEmpty(message = "模型不能为空") // 确保列表不为null且至少有一个元素
    @Valid // 开启嵌套校验
    @ApiModelProperty("模型数组")
    private List<String> model;

    @NotBlank(message = "时间分辨率不能为空")
    @ApiModelProperty("时间分辨率")
    private String interval;

    @NotBlank(message = "通讯ID不能为空")
    @ApiModelProperty("通讯ID")
    private String sseId;

    public static String translateErrorType(String typeCode){
        String typeName = "";
        switch (typeCode){
            case "average_absolute_error":
                typeName = "评估指标为平均绝对误差时, 最优模型为 ";
                break;
            case "average_relative_error":
                typeName = "评估指标为平均相对误差时，最优模型为 ";
                break;
            case "average_root_mean_square_error":
                typeName = "评估指标为均方根误差时，最优模型为 ";
                break;
            case "average_corrCoee":
                typeName = "评估指标为相关系数时，最优模型为 ";
                break;
        }
        return typeName;
    }


}
